import pandas as pd

# 读取csv和xlsx文件
data1 = pd.read_csv("数据1.csv", encoding='ANSI')
data2 = pd.read_excel("数据2.xlsx")

# 合并两个DataFrame（假设有相同的列进行合并）
merged_data = pd.concat([data1, data2], ignore_index=True)

# 查看合并后的前5行
print("合并后的前五行为：")
print(merged_data.head())

# 筛选国籍为中国且性别为“女”的运动员
filtered_data = merged_data[(merged_data['国籍'] == '中国') & (merged_data['性别'] == '女')& (merged_data['项目'] == '篮球')]

filtered_data_c = filtered_data.copy()
# 删除重复的行，忽略字符串中的空格
filtered_data_duplicated = filtered_data_c.duplicated(subset='外文名',keep='first')
filtered_data_c.drop_duplicates('外文名',
                    keep='first',
                    inplace=True,
                    ignore_index=True)



import numpy as np


# 将“身高”列中缺失值填充为平均值，并保留一位小数
filtered_data_c['身高'] = filtered_data_c['身高'].str[:-2]
filtered_data_c['身高'] = pd.to_numeric(filtered_data_c['身高'], errors='coerce')
# 11   李月汝      Li Yue Ru  女  中国    2.0  103.0  篮球       山西
# filtered_data.loc[5, '省份'] = '青岛'
filtered_data_c.loc[11,'身高'] = 201.0
# 14   张丽婷  Zhang Li Ting  女  中国    1.9   88.0  篮球       湖北
filtered_data_c.loc[14,'身高'] = 198.0
filtered_data_c.loc[10,'身高'] = 189.0
height_mean = filtered_data_c['身高'].mean()
filtered_data_c['身高'] = filtered_data_c['身高'].fillna(height_mean).round(1)



# 重命名“身高”为“身高/cm”
filtered_data_c.rename(columns={'身高': '身高/cm'}, inplace=True)
filtered_data = filtered_data_c.copy()



# 假设体重列为“体重”，将其转换为kg，填充空值为平均体重
filtered_data['体重'] = filtered_data['体重'].str[:-2]
filtered_data['体重'] = pd.to_numeric(filtered_data['体重'], errors='coerce')

# 处理异常值，例如明显错误的体重（假设低于40kg或高于150kg为异常）
weight_mean = filtered_data[(filtered_data['体重'] >= 40) & (filtered_data['体重'] <= 150)]['体重'].mean()
filtered_data['体重'] = filtered_data['体重'].apply(lambda x: np.nan if x < 40 or x > 150 else x)
filtered_data['体重'] = filtered_data['体重'].fillna(weight_mean).round(1)
filtered_data['体重'] = filtered_data['体重'].astype(str) + 'kg'



# 将省份的空缺值填充为“未知”
filtered_data['省份'] = filtered_data['省份'].fillna('未知')


# 使用loc方法修改“陈楠”的省份为“青岛”
filtered_data.loc[5, '省份'] = '青岛'

# 使用iloc方法修改“陈晓佳”的省份为“江苏”
filtered_data.iloc[6,7] = '江苏'

print("清理后的数据为:")
print(filtered_data)